﻿using ServiceCore.DbContext;
using ServiceCore.Entity.Arg;
using ServiceCore.Entity.Model;
using ServiceCore.Utility.Extension;

namespace ServiceCore.Service
{
    public partial class TextParseService : SqlsugarServices<RecordInfo>
    {
        public void Text_Parse(ArgTextParse arg)
        {

            /* 
            arg.Text = @"
 迷一样的男人:
23+11+31+41+09+27+16+24+42+34各10总计100

迷一样的男人:
蛇各号5米总计25

迷一样的男人:
03.01.18各20
12.19.23.35各10
总计100

迷一样的男人:
16.34.28.15.38.14.41.35各15总计120

迷一样的男人:
23.18/100米
 30.13.49/50米
总计350

迷一样的男人:
18-23-13-49各10总计40

迷一样的男人:
鼠40

迷一样的男人:
牛40

迷一样的男人:
猴龙各号10元，
牛羊各5元，总计120

迷一样的男人:
包兔一个5米
02和05一个5米
15搞10米总计40

迷一样的男人:
澳门22号10块

迷一样的男人:
10，22各5元，
34，46各10元，总计30元

迷一样的男人:
34号4

迷一样的男人:
16号20

迷一样的男人:
08.18各30
总计60

迷一样的男人:
28.38各15
总计30

迷一样的男人:
43十块
05 28各二十块总计50

迷一样的男人:
08.18.28.38各20
总计80

迷一样的男人:
05.15.25.35各20
45.48各25
总计130

迷一样的男人:
虎20

迷一样的男人:
牛各30总计120

迷一样的男人:
21

迷一样的男人:
36 37各20总计40

迷一样的男人:
19/25/13/33/44/35/49/45
/15/43各5
05/各10
23//各40总计100

迷一样的男人:
29/41/23/43各十米 ，11/47/35/31/07/19各5总计70

迷一样的男人:
牛40

迷一样的男人:
虎20米。牛20米。兔20米。猴20米。狗20米。03,04,08,10,15,20,29,46个5米。03,04,15,20,46个5米。15,20,46个5米。总计180米。

迷一样的男人:
虎20米。牛20米。兔20米。猴20米。狗20米。03,04,08,10,15,20,29,46个5米。03,04,15,20,46个5米。15,20,46个5米。总计180米。

迷一样的男人:
虎各10米。
40/20米。
鼠各20米。
30/30米。总计40+20+80+30=170

迷一样的男人:
31/07/11/35/09/21/12/36/20/32/02/26各10
09/35/26/36/07各10总计170

迷一样的男人:
29

迷一样的男人:
马狗鼠各包80合计240

迷一样的男人:
平特尾数，7尾100

迷一样的男人:
特码48一50米
08/09/48/49各10米共40
28/29/各5米共10
鸡马各5米共40合计140

迷一样的男人:
1 2 3 8 11 12 13 16 18 19 20 22 23 26 28 29 30 32 38 39 40各5合计105

迷一样的男人:
7 17 27 37各10合计40

迷一样的男人:
蛇一个数十闷合计50

迷一样的男人:
牛兔鼠猴羊每个数字30合计600

迷一样的男人:
龙狗虎每个数字各数字20合计240

迷一样的男人:
猪兔牛三连50
29-10
39-30合计90

迷一样的男人:
25 37 49各打五块合计15

迷一样的男人:
05。07。41。各十块共30
11。47。 27。39 各五块共20合计50

迷一样的男人:
包马龙猪各10🈴30元

迷一样的男人:
15  28  29  07  18各2元合计10

迷一样的男人:
14-38-32-34-25-15-21各5合计35

迷一样的男人:
包羊，每个数10米，合计40米

迷一样的男人:
平特肖马100元
23.24.25.各15元
合计145元

迷一样的男人:
马狗每个数5米合计40

迷一样的男人:
19 29 49 37 30各数3块合计15

迷一样的男人:
兔各数5块合计20

迷一样的男人:
猪10块包肖
19买5块合计15

迷一样的男人:
12.24各50元共100
10.22.28.40.06.30.48各10元共70元
01.13.37.49各5元共20合计190

迷一样的男人:
龙兔鼠猴各号5块。共80
03.06.22.07.19.各号5块共25合计105

迷一样的男人:
19 29 49 37 30 39各十共60
19 39各 二十共40
平特一肖猴一百合计200

迷一样的男人:
鸡猴龙兔每号各25元合计400

迷一样的男人:
19/29/49/37/30/各号5块合计25

迷一样的男人:
龙蛇每个数字字各10合计90

迷一样的男人:
兔猪每个数字各5合计40

迷一样的男人:
14,30,45,16,25,27,29,42,33,41,43,各二十五共275
06.28.44.04.08.36.20各十共70
24.38.49各五共15合计360

迷一样的男人:
02 10 12 14 20 24 31 32 34 39 43 49 各号一百五合计1800

迷一样的男人:
30.08.46.12.24.34号各15米合计90米.02.40.18号各5米合计15米
合计105米

迷一样的男人:
59

迷一样的男人:
澳门，
06号10块

迷一样的男人:
牛羊兔各5总计60

迷一样的男人:
兔虎牛猪各10总计160

迷一样的男人:
35/24/30各40米
08/80米。
总计200

迷一样的男人:
22.04.16.05.32.44.42.43.36各20
总计180

迷一样的男人:
澳，24，48，26，38，19，31各5米总计30

迷一样的男人:
澳门特码，21.37.15.08.20.各5块，共25元，42号，10块，总计，35元

迷一样的男人:
牛20

迷一样的男人:
虎20米。牛20米。兔20米。猴20米。狗20米。03,04,08,10,15,20,29,46个5米。03,04,15,20,46个5米。15,20,46个5米。总计180米。

迷一样的男人:
28号20

迷一样的男人:
平特一肖牛100

迷一样的男人:
澳，特，马，兔，肖各40，
15，48/10总计100

迷一样的男人:
马虎兔 三连 二十
马虎兔龙 四连  二十
马虎兔龙牛 五连 二十
总计60

迷一样的男人:
兔各号十米
总计40

迷一样的男人:
马各号十米
兔各号二十
03号二十
40+80+20=140
总计140

迷一样的男人:
新澳特🐎，04-10-14-20-26-36-42-48各5总计40

迷一样的男人:
05.17.29.09.33.45.37.13.27.39.35.47
22.46.26.38各号5元总计80

迷一样的男人:
76

迷一样的男人:
猴各15元。共60
兔各4元。 共16
  34各5块。合计81

迷一样的男人:
33-35-13-16-32-45-37-15-4每个字5块。合计45

迷一样的男人:
新澳，02，14，38，13，25，37，22，46，各20元，合160元

迷一样的男人:
包马羊龙各160元合计480元

迷一样的男人:
新澳12.32.42.36.10.34.01.25.11.35.19.31各5
合计60

迷一样的男人:
包牛马猪各80元合计240元

迷一样的男人:
37/47/17各10米计30


====================================

迷一样的男人:
05.15.35.42.19.43.26.36.20.44.14.28.22.11.28.16各号5米
鸡蛇兔各号5米合计145

迷一样的男人:
澳门，12，48，39，49，13，47各10米共计60米

迷一样的男人:
176

迷一样的男人:
猪狗各号5元总计40

迷一样的男人:
12买20元
34+11+32+09各10元
总计60

迷一样的男人:
牛猴羊各5总计60

迷一样的男人:
45/36个十总计20

迷一样的男人:
1+11+21+31+41+2+12+22+32+42+4+14+24+34+44+7+17+27+37+47各10元总计200

迷一样的男人:
兔龙各号十
总计80

迷一样的男人:
蛇鸡虎各5（65
14.26.36.04.16.28.06.42各5（40）总计105

迷一样的男人:
40，各10
01.29.41，各5
虎兔，各数5
马兔，各数5总计10+15+40+40=105

迷一样的男人:
184

迷一样的男人:
40、42、41、46、各20元，共80

迷一样的男人:
澳26号 60

迷一样的男人:
2号20

迷一样的男人:
14.26各10，共20

迷一样的男人:
包龙六十

迷一样的男人:
19/25/40个20米，共60

迷一样的男人:
26 号五十

迷一样的男人:
191

迷一样的男人:
羊兔蛇虎各肖40
鼠名肖20
02.36各数5元，共190

           ";
            */


            /*arg.Text = @"
虎:20，龙:16，兔:40，共:76";*/


            Text_Parse_Text_Arg(arg);
            if (string.IsNullOrEmpty(arg.ErrorMsg) == false)
                return;

            //文字处理
            Text_Parse_Text_Lines(arg); //文字转行            
            Text_Parse_Text_Punctuate(arg); //标点去除 【重点】
            Text_Parse_Text_RemoveUpLines(arg); //移动到上一行（合计单独一行移到上行）
            Text_Parse_Text_RemoveNoNumeric(arg); //删除非数字行
            Text_Parse_Text_RemoveAuthor(arg); //删除作者（如作者名称包含数字处理）            

            //封装处理对象
            Text_Parse_Datas_Init(arg); //封装处理对象
            Text_Parse_Datas_NoTake(arg); //不支持
            Text_Parse_Datas_ParsemMode(arg); //处理模式分组 【重点】
            Text_Parse_Text_ChineseToNumber(arg); //中文数字转阿拉伯数字

            //标签类型
            Text_Parse_TagType_Pack(arg); //包含包
            Text_Parse_TagType_Each(arg); //包含各  
            Text_Parse_TagType_General(arg); //通用
            Text_Parse_TagType_ChangLine(arg); //换行
            
            //标签
            Text_Parse_Tag_Each(arg); //包含各
            Text_Parse_Tag_General(arg); //通用

            //失败记录txt日志
            Text_Parse_Text_Log_Error(arg);

            //decimal total = 0;
            //var json = GetTestJson(arg, "17", out total);
        }

        public string GetTestJson(ArgTextParse arg, string tagName, out decimal total, string tagTypeName = "")
        {
            total = 0;
            var bb = new List<TextParseDto>();
            foreach (var item in arg.Datas)
            {
                if (string.IsNullOrEmpty(tagTypeName) == false)
                {
                    if (item.lstTag.Where(x => x.Name == tagName || x.TagTypeName == tagTypeName).Any())
                    {
                        item.lstTag = item.lstTag.Where(x => x.Name == tagName || x.TagTypeName == tagTypeName).ToList();
                        bb.Add(item);
                    }
                    continue;
                }

                if (item.lstTag.Where(x => x.Name == tagName).Any())
                {
                    item.lstTag = item.lstTag.Where(x => x.Name == tagName).ToList();
                    bb.Add(item);
                }
            }
            var cc = bb.ToJson();
            total = bb.Sum(x => x.lstTag.Sum(n => n.DataValue));
            return cc;
        }
    }
}


